package com.desmao.service;

import com.github.pagehelper.PageInfo;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @Author: denghp
 * @Date: 17-1-5
 * @Time: 下午5:18
 * @Description:
 * @Version \$versionId$
 */
public interface BaseService<T, ID extends Serializable>  {

    int insert(T entity);

    int insertSelective(T entity);

    T selectByPrimaryKey(ID id);

    /**
     * 根据主键更新
     * @param record
     * @return
     */
    int updateByPrimaryKey(T record);

    /**
     * 选择性更新
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 根据主键删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(ID id);

    /**
     * 根据条件集合进行指定类型对象集合查询
     *
     * @param condition
     *            进行查询的条件集合
     * @return 返回泛型参数类型的对象集合，如何取到泛型类型参数
     */
    List<T> selectList(Map<String, Object> condition, String orderBy);

    List<T> selectList();

    PageInfo<T> selectPage(int page, int rows);

    /**
     * <p/>
     * 根据给定的页码进行分页查找
     * <p/>
     * @param condition
     *                  查询过滤条件,以key-value形式組成
     * @param page
     *                  查询当前页数
     * @param rows
     *                  返回的數量
     * @param orderBy   排序
     *
     * @return PageInfo
     *
     */
    PageInfo<T> selectPage(Map<String, Object> condition, int page, int rows, String orderBy);
}
